const request = require('request');
const cheerio = require('cheerio');
const New = require('../models/New.js')();

class AmazoniaRealWatch {

  constructor() {
    this.url = 'http://amazoniareal.com.br/';
    this.websiteSlug = 'amazoniareal';
    this.tag = 'meio-ambiente';
  }

  get Url() {
    return this.url;
  }

  get Tag() {
    return this.tag;
  }

  get WebsiteSlug() {
    return this.websiteSlug;
  }

  registerLatestNovelty() {

    request(this.url, function (error, response, body) {

      if (!error && response.statusCode == 200) {
        
        const $ = cheerio.load(body);

        const currentDate = new Date();
        const href = $('.meio-ambiente').first().find('a').first().attr('href');

        request(href, function (error2, response2, body2) {
          if (!error2 && response2.statusCode == 200) {

            const $2 = cheerio.load(body2);
            // conteúdo da postagem
            var content = $2('.single-content').first().html();

            const article = {
              link: href,
              websiteSlug: this.websiteSlug,
              // data da postagem, no site...
              date: $('.meio-ambiente').first().find('.published').first().text(),
              // imagem da postagem
              thumb: $('.meio-ambiente').first().find('.image-thumbnail').first().css("background-image").replace("url('", '').replace("')", '').replace(/\"/gi, ""),
              // titulo da postagem
              title: $('.meio-ambiente').first().find('h2').first().text(),
              content: content,
              // tag da categoria
              tag: this.tag,
            }

            New.query
              .findAndCountAll({ where: { link: article.link } })
              .then(result => {
                if (result.count < 1) {
                  New.query.create(article);
                  console.log('[ADDED] ' + article.title + ' +')
                } else {
                  console.log('[CHECKED] ' + article.websiteSlug + ' ✓')
                }
              });

          } else {
            console.log('[ERROR] HOUVE UM ERRO NO LINK DA POSTAGEM x ')
          }
        }.bind(this));
      } else {
        console.log('[ERROR] HOUVE ALGUM ERRO x ')
      }
    }.bind(this));
  }
}

module.exports = AmazoniaRealWatch;

